﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using WeWork.Common;
using WeWork.Model;

namespace WeWork.Service
{
    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }
        public void OnStart()
        {
            string corpid = ""; //企业微信ID
            string secret = ""; //会话内容存档 secret
            string privateKey1 = @"-----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----"; //会话内容存档 加密 私钥及对应版本号 pem格式的私钥
            Dictionary<int, string> verKey = new Dictionary<int, string>();
            verKey.Add(1, privateKey1);

            var seq = 0; //这个可以第一次使用为0 下一次使用为上一次拉取时保存的最大值（下面有注释）
            var client = new FinanceHelper(corpid, secret, verKey);

            //同步方法
            var result = client.GetChatList(seq);
            //异步方法
            //var result = await client.GetChatListAsync(seq);

            List<IMsgBase> msgList = result.Item1; //企业微信 会话内容 列表
            List<FileData> fileList = result.Item2; //媒体内容 列表

            List<string> groupList = result.Item3; //群列表
            List<string> useridList = result.Item4; //内部用户列表
            List<string> externalList = result.Item5; //外部联系人列表
            List<string> robotList = result.Item6; //机器人列表


            //msgList 中最大的seq 值  要保存好 下次拉取数据时要带入  
            //同一个企业要根据 MsgId 消息去重 
            //fileList 这个媒体数据 也要根据 SdkFileId 去重
        }
        protected override void OnStart(string[] args)
        {
            string corpid = ""; //企业微信ID
            string secret = ""; //会话内容存档 secret
            string privateKey1 = @"-----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----"; //会话内容存档 加密 私钥及对应版本号 pem格式的私钥
            Dictionary<int, string> verKey = new Dictionary<int, string>();
            verKey.Add(1, privateKey1);

            TimerHelper.SetTimeOut(corpid, async () =>
            {
                var seq = 0; //这个可以第一次使用为0 下一次使用为上一次拉取时保存的最大值（下面有注释）
                var client = new FinanceHelper(corpid, secret, verKey);

                //同步方法
                var result = client.GetChatList(seq);
                //异步方法
                //var result = await client.GetChatListAsync(seq);

                List<IMsgBase> msgList = result.Item1; //企业微信 会话内容 列表
                List<FileData> fileList = result.Item2; //媒体内容 列表

                List<string> groupList = result.Item3; //群列表
                List<string> useridList = result.Item4; //内部用户列表
                List<string> externalList = result.Item5; //外部联系人列表
                List<string> robotList = result.Item6; //机器人列表

                //msgList 中最大的seq 值  要保存好 下次拉取数据时要带入  
                //同一个企业要根据 MsgId 消息去重 
                //fileList 这个媒体数据 也要根据 SdkFileId 去重
            }, 1800);
        }

        protected override void OnStop()
        {
            //清除指定 corpid
            //string corpid = "";
            //TimerHelper.ClearTimeOut(corpid);

            //清除所有
            TimerHelper.ClearTimeOutAll();
        }
    }
}
